Android目前为止所有发布的版本以及对应的API等级
Android SDK版本
两个预发布的内部版本
> Android alpha (Astro·原子小金刚)
Android beta (Bender·机器人班亭)
@2007.11.05
初期过渡版本
Android 1.0
[API 1]@2008.09.23
Android 1.1
[API 2]
@2009.02.09
甜点版本代号
Android 1.5 (Cupcake·纸杯蛋糕)
[API 3]@2009.04.27
Android 1.6 (Donut·甜甜圈)
[API 4]@2009.09.15
Android 2.0 (Eclair· 泡芙)
[API 5]@2009.10.26
Android 2.0.1 (Eclair· 泡芙)
[API 6]@2009.12.03
Android 2.1 (Eclair· 泡芙)
[API 7]@2010.01.12
Android 2.2/2.2.1/2.2.2/2.2.3 (Froyo·冻酸奶)
[API 8]@2010.05.20/2011.01.18/2011.01.22/2011.11.21
Android 2.3/2.3.1/2.3.2 (Gingerbread·姜饼)
[API 9]@2010.12.06/2010.12.15/2011.01.09
Android 2.3.3/2.3.4/2.3.5/2.3.6/2.3.7 (Gingerbread·姜饼)
[API 10]@2011.02.09/2011.04.28/2011.07.25/2011.09.02/2011.09.21
Android 3.0 (Honeycomb·蜂巢)
[API 11]@2011.02.22
Android 3.1 (Honeycomb·蜂巢)
[API 12]@2011.05.10
Android 3.2/3.2.1/3.2.2/3.2.3/3.2.4/3.2.5/3.2.6 (Honeycomb·蜂巢)
[API 13]@2011.07.15/…/…/…/2011.12.04/2012.01.14/2012.02.22
Android 4.0/4.0.1/4.0.2 (Ice Cream Sandwich·冰淇淋三明治)
[API 14]@2011.10.18/2011.10.21/2011.11.28
Android 4.0.3/4.0.4 (Ice Cream Sandwich·冰淇淋三明治)
[API 15]@2011.12.16/2012.03.29
Android 4.1/4.1.1/4.1.2 (Jelly Bean·果冻豆)
[API 16]@2012.07.09/2012.07.11/2012.10.09
Android 4.2/4.2.1/4.2.2 (Jelly Bean·果冻豆)
[API 17]@2012.11.13/2012.11.27/2013.02.11
Android 4.3/4.3.1 (Jelly Bean·果冻豆)
[API 18]@2013.07.24/2013.10.03
Android 4.4/4.4.1/4.4.2/4.4.3/4.4.4 (KitKat·奇巧巧克力)
[API 19]@2013.10.31/2013.12.05/2013.12.09/2014.06.02/2014.06.20
Android 4.4W/4.4W.1/4.4W.2 (KitKat·奇巧巧克力)
[API 20]@2014.06.25/2014.09.06~2014.10.21
Android 5.0/5.0.1/5.0.2 (Lollipop·棒棒糖)
[API 21]@2014.11.12~2014.12.02/2014.12.19
Android 5.1/5.1.1 (Lollipop·棒棒糖)
[API 22]@2015.03.10/2015.04.22
Android 6.0/6.0.1 (Marshmallow·棉花糖)
[API 23]@2015.10.05/2015.12.07
Android 7.0 (Nougat·牛轧糖)
[API 24]_@2016.08.22
Android 7.1.1/7.1.2 (Nougat·牛轧糖)
[API 25]@2016.12.05/2017.04.04
Android 8.0 O(预览版)
[API 26]
@2017.03.21
Android SDK版本用处
获取版本号
- 为什么要获取版本号?
有时候发布的APP出现异常,我们捕获异常,需要将异常携带该设备的SDK版本号上传到服务器,方便开发者进行异常分析。
如何获取发布版本号以及API Level?
/**
获取Android发布的版本
*/
public static String getVersion() {
return android.os.Build.VERSION.RELEASE;
}/**
- 获取SDK的API Level
*/
public static int getSDK() {
return android.os.Build.VERSION.SDK_INT;
}
根据版本号来适配
Android 6.0的权限系统
protected boolean hasPermission(String permission) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) return (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED); return true;
}
判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。Build.VERSION.SDK_INT是指当前设备的API Level。
通知的部分属性
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
builder.setSubText("it is really basic");
}
通知的副标题需要API Level 16才能使用。
当然API Level也可以直接写成数字,不过不建议大家这样做,这里你可能记得16数字的含义,可是在其他地方使用数字你可能就不记得了,所以为了规范还是写VERSION_CODES吧,毕竟这样逼格也更高!
if (Build.VERSION.SDK_INT >= 16) {
builder.setSubText("it is really basic");
}
参考文献
https://zh.wikipedia.org/wiki/Android%E6%AD%B7%E5%8F%B2%E7%89%88%E6%9C%AC
http://www.cnblogs.com/kangjianwei101/p/5220035.html
http://www.jianshu.com/p/830d0eb44a56